package logicaDeNegocio;

import interfaz.Error;

import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.JDialog;

import entidades.Fecha;
import entidades.Jugador;
import entidades.Partido;
import entidades.DAOs.DAOequipos;
import entidades.DAOs.DAOfechas;
import entidades.DAOs.DAOjugadores;
import entidades.DAOs.DAOpartidos;
import entidades.DTOs.DTOJugador;


/**
 * @author sg
 * @version 1.0
 * @created 13-nov-2013 06:33:09 p.m.
 */
public class GestionDeJugadores {
	

	public GestionDeJugadores(){

	}

	public void finalize() throws Throwable {

	}
	
	public static ArrayList <Jugador> getTitulares (ArrayList <Integer> idTitulares) {
		try {
			return DAOjugadores.getTitulares(idTitulares);
		}
		catch (SQLException a){
			a.printStackTrace();
			return new ArrayList <Jugador>();
		}
		catch(ClassNotFoundException b){
			b.printStackTrace();
			return new ArrayList <Jugador>();
		}
	}

	public static Object[][] datosTablaJugadores(int id_equipo,int precioMin,int precioMax,int id_puesto) throws SQLException, ClassNotFoundException{
		
		ArrayList <DTOJugador> jugadores = new ArrayList <DTOJugador>();
		if (id_puesto==5 && id_equipo==999) jugadores=DAOjugadores.getAllJugadores(precioMin, precioMax);
		else if(id_puesto==5) jugadores = DAOjugadores.selectJugadoresNoPuesto(id_equipo, precioMin, precioMax);
		else if(id_equipo == 999) jugadores = DAOjugadores.selectJugadoresNoEquipo(precioMin, precioMax, id_puesto);
		else jugadores = DAOjugadores.selectJugadores(id_equipo, precioMin, precioMax, id_puesto);
		
		Object[][] tabla = new Object [jugadores.size()][7];
		
		for(int i=0; i<jugadores.size(); i++){
			
			tabla[i][0] = jugadores.get(i).getApellido();
			tabla[i][1] = jugadores.get(i).getNombre();
			tabla[i][2] = jugadores.get(i).getEquipo1raDivision();
			tabla[i][3] = jugadores.get(i).getM_Puesto().getNombre();
			tabla[i][4] = jugadores.get(i).getCotizacion();
			tabla[i][5] = false;
			tabla[i][6] = jugadores.get(i).getId_jugador();
			
		}
		
		return tabla;
		
	}
	
	public static boolean agregarJugador(ArrayList <Integer> idJugadores, int id_jugador)  throws SQLException, ClassNotFoundException{
		
		int cantidadJugadoresEquipo = 0;
		int cantidadJugadoresPuesto=0;
		int sumaCotizaciones = 0;
		boolean jugadoresMismoEquipo = false;
		
		cantidadJugadoresPuesto = DAOjugadores.cantidadJugadoresPuesto(idJugadores, id_jugador);
		
		int id_puesto=DAOjugadores.getIdPuesto(id_jugador);
		
		switch(id_puesto){
			case 1:
				if(cantidadJugadoresPuesto == 2){
					Error dlgErr = new Error("Ya posee un arquero titular y uno suplente");
					dlgErr.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
					dlgErr.setVisible(true);
					return false;
				}
				break;
			case 2:
				if(cantidadJugadoresPuesto == 5){
					Error dlgErr = new Error("Ya posee cuatro defensores titulares y uno suplente");
					dlgErr.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
					dlgErr.setVisible(true);
					return false;
				}
				break;
			case 3:
				if(cantidadJugadoresPuesto == 4){
					Error dlgErr = new Error("Ya posee tres volantes titulares y uno suplente");
					dlgErr.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
					dlgErr.setVisible(true);
					return false;
				}
				break;
			case 4:
				if(cantidadJugadoresPuesto == 4){
					Error dlgErr = new Error("Ya posee tres delanteros titulares y uno suplente");
					dlgErr.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
					dlgErr.setVisible(true);
					return false;
				}	
				break;
		}
		
		cantidadJugadoresEquipo = DAOjugadores.cantidadJugadoresEquipo(idJugadores, id_jugador);
		
		if(cantidadJugadoresEquipo>2){
			Error dlgErr = new Error("Ya posee tres jugadores de ese equipo");
			dlgErr.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
			dlgErr.setVisible(true);
			return false;
		}
		
		if(idJugadores.contains(id_jugador)) {
			Error dlgErr = new Error("Ya posee este jugador en el equipo");
			dlgErr.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
			dlgErr.setVisible(true);
			return false;
		}
		
		for(int i=0; i < idJugadores.size(); i++){
			int cotizacion = DAOjugadores.getCotizacionJugador(idJugadores.get(i));
			sumaCotizaciones += cotizacion;
		}
		
		if(sumaCotizaciones>50000000){
			Error dlgErr = new Error("La adquisicion de este jugador supera el persupuesto de 50.000.000");
			dlgErr.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
			dlgErr.setVisible(true);
			return false;
		}
		
		return true;
		
	}
	
	public static ArrayList <Jugador> getSuplentes (ArrayList <Integer> idSuplentes) {
		try {
			return DAOjugadores.getSuplentes(idSuplentes);
		}
		catch (SQLException a){
			a.printStackTrace();
			return null;
		}
		catch(ClassNotFoundException b){
			b.printStackTrace();
			return null;
		}
	}

	/*public static Jugador getJugador(int id_jugador) {
		// TODO Auto-generated method stub
		
		return DAOjugadores.getJugador(id_jugador);
	}*/

	public static ArrayList <DTOJugador> selectJugadores(int id_equipo) {
		// TODO Auto-generated method stub
		try {
			return DAOjugadores.selectJugadores(id_equipo);
		}
		catch (SQLException a){
			a.printStackTrace();
			return null;
		}
		catch(ClassNotFoundException b){
			b.printStackTrace();
			return null;
		}
	}
	
}//end Gestion De Jugadores